<?php
 if ( ! defined('BASEPATH')) exit('No direct script access allowed');
Class Mcontent extends MY_Model
{
    public function __construct()
    {
        parent::__construct();
    }
    
//    public function genQrcode($lengthCode){
//        return $this->generateCode($lengthCode);
//    }
//    public function saveQrcode($qrCode,$idUser,$idCoupon){
//        //set insert data
//        $data = array(
//            'coupon_id' => $idCoupon,
//            'user_id' => $idUser,
//            'active' => 1,
//            'created'=>  date('Y-m-d H:i:s'),
//            'code_coupon_qrcode'=>$qrCode,
//            
//        );
//        //inset data
//        $run=$this->db->insert('ecoupon_user', $data); 
//        if($run)
//        {
//                    return (object)array('status' => 200,
//                        'codeQpr' => $qrCode,
//                        'description' => 'Success');
//                
//        }else{
//            return (object)array('status' => 201, 'description' => 'Error.Try again');
//        }
//    }
    public function getNewIncentive($page,$limit,$zone){
        If($page< 1 || in_array( $limit,array('',null,'0'))|| in_array( $zone,array('',null,'0') ))
        {
             return (object) array('status' => 201, 'description' => 'Tham số không đúng'); 
        }
        $stt=$limit*($page-1);
        $sql_limit=" LIMIT $stt,$limit ";
        $query=" SELECT ir.id,ir.title,ir.image,ir.slide_image ,ir.summary,ir.content"
            . " FROM incentive_restaurant as ir,incentive_zone_key as izk "
            . "WHERE ir.id=izk.id_incentive AND izk.id_zone = $zone AND ir.active = 1 ORDER by ir.id DESC " ;
        $total=$this->db->query($query)->num_rows();
        if($total==0)return (object) array('status' => 202, 'description' => 'Không tìm thấy ưu đãi'); 
        $incent=$this->db->query($query.$sql_limit)->result_array();
        $data['list_incentive']=$incent;
        $data['total']=$this->db->query($query)->num_rows();
        return (object) array('status' => 200, 'description' => 'Tìm thấy ưu đãi','data'=>$data);  
        //"SELECT ir.id,ir.title,ir.title_ascii,ir.image,ir.summary,ir.content,ir.type,ir.province_id,ir.created FROM incentive_restaurant AS ir LEFT JOIN incentive_restaurant_key AS irk ON irk.id_incentive = ir.id LEFT JOIN restaurant AS r ON r.id = irk.id_restaurant WHERE irk.id_restaurant = $label OR ir.type_sl = 0 AND ir.active = 1 ORDER BY created DESC LIMIT $stt,$limit "
    }
    
    
    public function getIncentiveFixed($limit,$stt){
        return $this->db->query("SELECT id,title,title_ascii,image,slide_image AS post_image,summary,content,ecoupon,type,province_id,created FROM incentive_restaurant WHERE type = 0 AND active = 1 ORDER BY created DESC LIMIT $stt,$limit ")->result_object();
    }
    
    public function getIncentiveMonthly($limit,$stt){
        return $this->db->query("SELECT id,title,title_ascii,image,slide_image AS post_image,summary,content,ecoupon,type,province_id,created FROM incentive_restaurant WHERE type = 1 AND active = 1 ORDER BY created DESC LIMIT $stt,$limit ")->result_object();
    }
    
    public function getRestaurantMenus($id){
        $result= $this->db->query("SELECT rm.id,rm.zone_id,rm.slide_image,z.title FROM restaurant_menus as rm JOIN zone as z ON rm.zone_id = z.id WHERE rm.restaurant_id = '".$id."' AND rm.active = 1 ORDER BY z.orderby ASC, rm.zone_id ASC ");
        $data=$result->result_array();
        $number=$result->num_rows();
        if($number == 0) return (object) array('status' => 201, 'description' => 'Không tìm thấy');  
//        var_dump($data);
//        foreach ($data as $key => $value)
//        {
//            
//           $data[$key]['slide_image']=  stripslashes($value['slide_image']);
//           $data[$key]['title']      =  stripslashes($value['title']);
//        }
        return array('status' => 200, 'description' => 'Tìm thấy','data' => $data);  
//        return $this->db->query("SELECT rm.id,rm.zone_id,rm.slide_image,z.title FROM restaurant_menus as rm JOIN zone as z ON rm.zone_id = z.id WHERE rm.restaurant_id = '".$id."' AND rm.active = 1 ORDER BY z.created DESC, rm.zone_id ASC ")->result_object();
    }
    
    
    public function getReviewRestaurant($id,$page,$limit){
        If($page< 1 || in_array( $limit,array('',null,'0'))|| in_array( $id,array('',null,'0') ))
        {
             return (object) array('status' => 201, 'description' => 'Tham số không đúng'); 
        }
        $stt=$limit*($page-1);
        $sql_limit=" LIMIT $stt,$limit ";
        $query="SELECT id, restaurant_id, user_id, `name`, star, content, improved, DATE_FORMAT(FROM_UNIXTIME(created), '%H:%i %d/%m/%Y') AS created FROM restaurant_review WHERE restaurant_id = ".$id." AND improved = 1 ORDER BY created DESC ";
        $total=$this->db->query($query)->num_rows();
        if($total==0)
        {
            return (object) array('status' => 202, 'description' => 'Không tìm thấy review'); 
        }
        $review=$this->db->query($query.$sql_limit)->result_array();
        $percent=$this->db->query("SELECT SUM(star)/COUNT(star) as percent FROM restaurant_review WHERE restaurant_id = ".$id." AND improved = 1 ")->row()->percent;
        
        $data['list_review']=$review;
        $data['total']=$total;
        $data['percent']=$percent;
        return (object) array('status' => 200, 'description' => 'Tìm thấy review','data'=>$data);      
    }
    
    public function getReviewCoupon($id,$page,$limit){
         If($page< 1 || in_array( $limit,array('',null,'0'))|| in_array( $id,array('',null,'0') ))
        {
             return (object) array('status' => 201, 'description' => 'Tham số không đúng'); 
        }
        $stt=$limit*($page-1);
        $sql_limit=" LIMIT $stt,$limit ";
        $query="SELECT id, coupon_id, user_id, `name`, star, content, improved, DATE_FORMAT(FROM_UNIXTIME(created), '%H:%i %d/%m/%Y') AS created FROM ecoupon_review WHERE coupon_id = ".$id." AND improved = 1 ORDER BY created DESC ";
        $total=$this->db->query($query)->num_rows();
        if($total==0)
        {
            return (object) array('status' => 202, 'description' => 'Không tìm thấy review'); 
        }
        $review=$this->db->query($query.$sql_limit);
        $percent=$this->db->query("SELECT SUM(star)/COUNT(star) as percent FROM ecoupon_review WHERE coupon_id = ".$id." AND improved = 1 ")->row()->percent;
        $data['list_review']=$review;
        $data['total']=$total;
        $data['percent']=$percent;
        return (object) array('status' => 200, 'description' => 'Tìm thấy review','data'=>$data);   
//            return $this->db->query("SELECT *,DATE_FORMAT(FROM_UNIXTIME(created), '%H:%i %d/%m/%Y') AS created FROM ecoupon_review WHERE coupon_id = ".$id." AND improved = 1 ORDER BY created DESC LIMIT $stt,$limit ")->result_object();
    }
	
    
    public function submitReviewRestaurant($restaurant_id,$user_id,$name,$star,$content){
       
        //Check tham số
        if(in_array( $user_id,array('',null,'0')))
        {
             return (object) array('status' => 201, 'description' => 'Bạn cần đăng nhập đế có thể sử dụng chức năng này!'); 
        }
        If(in_array( $restaurant_id,array('',null,'0')) || in_array( $user_id,array('',null,'0'))|| in_array( $name,array('',null,'0')) || in_array( $star,array('',null,'0') || in_array( $content,array('',null,'0'))))
        {
             return (object) array('status' => 201, 'description' => 'Tham số rỗng hoặc thiếu.'); 
        }
        
        //Check user có tồn tại không
        $checkUser=$this->db->query("SELECT * FROM member WHERE id = $user_id AND active = 1")->num_rows();
        if($checkUser == 0)return (object) array('status' => 202, 'description' => 'User không tồn tại hoặc bị khóa hoặc chưa kích hoạt'); 
        //Check nhà hàng có tồn tại không
        $checkRes=$this->db->query("SELECT * FROM restaurant WHERE id = $restaurant_id")->num_rows();
        if($checkRes == 0)return (object) array('status' => 203, 'description' => 'Nhà hàng không tồn tại');
        //Check số lượt review của user/cửa hàng(tối đa 3 lần)-------//có thể ko giới hạn tất nhưng tối đa trong 1 khoảng tg nào đó..(chưa làm)
        $numberReview=$this->db->query("SELECT id FROM restaurant_review WHERE restaurant_id = $restaurant_id AND user_id = $user_id")->num_rows();
        if($numberReview == 3)return (object) array('status' => 204, 'description' => 'Bạn chỉ review tối đa 3 lần/1 nhà hàng');
        
        $data = array (
            'restaurant_id' => $restaurant_id,
            'user_id' => $user_id,
            'name' => $name,
            'star' => $star,
            'content' => $content,
            'created' => time(),
            'improved' => 0
            );
            $run = $this->db->insert('restaurant_review', $data );
            if($run){
                return (object) array('status' => 205, 'description' => 'Review thành công');
            }else{
                return (object) array('status' => 206, 'description' => 'Ko thành công,thử lại');
            }
    }
    
    
    
     public function submitReviewCoupon($coupon_id,$user_id,$name,$star,$content){
//        $data = array (
//            'coupon_id' => $coupon_id,
//            'user_id' => $user_id,
//            'name' => $name,
//            'star' => $star,
//            'content' => $content,
//            'created' => time(),
//            'improved' => 0
//            );
//            
//        $run = $this->db->insert('ecoupon_review', $data );
//        if($run){
//            return 200;
//        }else{
//            return 201;
//        }
        if(in_array( $user_id,array('',null,'0')))
        {
             return (object) array('status' => 201, 'description' => 'Bạn cần đăng nhập đế có thể sử dụng chức năng này!'); 
        }
         If(in_array( $coupon_id,array('',null,'0')) || in_array( $user_id,array('',null,'0'))|| in_array( $name,array('',null,'0')) || in_array( $star,array('',null,'0') || in_array( $content,array('',null,'0'))))
        {
             return (object) array('status' => 201, 'description' => 'Tham số rỗng hoặc thiếu.'); 
        }
        
        //Check user có tồn tại không
        $checkUser=$this->db->query("SELECT * FROM member WHERE id = $user_id AND active = 1")->num_rows();
        if($checkUser == 0)return (object) array('status' => 202, 'description' => 'User không tồn tại hoặc bị khóa hoặc chưa kích hoạt'); 
        //Check coupon có tồn tại không
        $checkCou=$this->db->query("SELECT * FROM ecoupon WHERE id = $coupon_id")->num_rows();
        if($checkCou == 0)return (object) array('status' => 203, 'description' => 'Coupon không tồn tại');
        //Check số lượt review của user/cửa hàng(tối đa 3 lần)-------//có thể ko giới hạn tất nhưng tối đa trong 1 khoảng tg nào đó..(chưa làm)
        $numberReview=$this->db->query("SELECT id FROM ecoupon_review WHERE coupon_id = $coupon_id AND user_id = $user_id")->num_rows();
        if($numberReview == 3)return (object) array('status' => 204, 'description' => 'Bạn chỉ review tối đa 3 lần/1 coupon');
        
        $data = array (
            'coupon_id' => $coupon_id,
            'user_id' => $user_id,
            'name' => $name,
            'star' => $star,
            'content' => $content,
            'created' => time(),
            'improved' => 0
            );
            $run = $this->db->insert('ecoupon_review', $data );
            if($run){
                return (object) array('status' => 205, 'description' => 'Review thành công');
            }else{
                return (object) array('status' => 206, 'description' => 'Ko thành công,thử lại');
            }
    }
    
//	public function submitBooking($user_id,$name,$phone,$email,$dates,$time,$restaurant_id,$address_id,$peoples = 1,$is_gpeople,$required){
//		$data = array (
//				'name' => $name,
//				'phone' => $phone,
//				'email' => $email,
//				'time_booking' => $time.'|'.$dates,
//				'address_id' => $address_id,
//				'peoples' => $peoples,
//				'is_gpeople' => $is_gpeople,
//				'required' => $required,
//				'improved' => 0,
//				'restaurant_id' => $restaurant_id,
//				'user_id' => $user_id,
//				'created' => time()		
//		);
//		$run = $this->db->insert('booking', $data);
//		if( $run ){
//			$emailAdmin =  $this->getEmailAdmin(); //email admin
//			//echo '<pre>';die(print_r($emailAdmin));
//			$emailCustomer = $email;
//			$data_add = $this->getAddressName($data['address_id']);  // data address
//			$this->sendMailAdmin($emailAdmin,$data,$data_add);
//			$this->sendMailMember($emailCustomer,$data,$data_add);
//			return 200;
//		}else{
//			return 201;
//		}
//		
//	}
	
    public function submitBooking($user_id,$phone,$date,$time,$address_id,$email,$name,$required,$peoples){
//        var_dump($user_id,$phone,$date,$time,$address_id,$email,$name,$required,$peoples);die;
        //Check tham số
        if(in_array( $user_id,array('',null,'0')))
        {
             return (object) array('status' => 201, 'description' => 'Bạn cần đăng nhập đế có thể sử dụng chức năng này!'); 
        }
        
        If(in_array( $user_id,array('',null,'0')) || in_array( $phone,array('',null,'0'))|| in_array($date,array('',null,'0')) || in_array( $time,array('',null,'0') || in_array( $address_id,array('',null,'0')) ||  in_array($name,array('',null,'0'))) || in_array($peoples,array('',null,'0')))
        {
             return (object) array('status' => 201, 'description' => 'Tham số không được để rỗng'); 
        }
        
        //Check date(đúng kí tự,chưa check ngày logic trong thời gian bao nhiêu..v.v...)
        if(!$this->checkDate($date))return (object) array('status' => 201, 'description' => 'Tham số date không đúng');        
        
        //Check hour đúng kí tự
        if(!$this->checkHour($time))return (object) array('status' => 201, 'description' => 'Tham số time không đúng');        
        
        //Check user có tồn tại không
        $checkUser=$this->db->query("SELECT * FROM member WHERE id = $user_id AND active = 1")->num_rows();
        if($checkUser == 0)return (object) array('status' => 201, 'description' => 'User không tồn tại hoặc bị khóa hoặc chưa kích hoạt'); 
        
        //Check address có tồn tại không
        $checkAddress=$this->db->query("SELECT * FROM restaurant_address WHERE id = $address_id")->num_rows();
        if($checkAddress == 0)return (object) array('status' => 201, 'description' => 'Địa chỉ không tồn tại');
//        var_dump(date('Y/m/d'));die;
        //Check 1 ngày đặt tối đa 3 lần
        $day=  strtotime(date('Y/m/d'));
        $dayAfter = strtotime("+1 day",$day);
//        var_dump($day,$dayAfter);die;
        $query="SELECT id FROM booking WHERE user_id = $user_id AND created >='$day' AND created < '$dayAfter'";
        $count=$this->db->query($query)->num_rows();
        if($count >= 3)return (object) array('status' => 202, 'description' => 'Bạn chỉ order tối đa 3 lần 1 ngày');
        
        //Insert order
        $data = array (
                        'phone' => $phone,
                        'time_booking' => $time.'|'.$date,
                        'address_id' => $address_id,
                        'user_id' => $user_id,
                        'email' => $email,
                        'name' => $name,
                        'required'=>$required,
                        'peoples'=>$peoples,
                        'created' => time()		
        );   
//        var_dump($data);die;
        $run = $this->db->insert('booking', $data);
        
        //Lấy email của admin
        $dataSend=$this->db->query("SELECT user.*,ra.address,r.name FROM restaurant_address as ra "
                . "INNER JOIN restaurant as r ON ra.restaurant_id =r.id "
                . "INNER JOIN user ON r.manage_id = user.id")->row();
        $emailAdmin=$dataSend->email;
        if($emailAdmin != null && $dataSend->get_email_booking == 1)
        {
            //Gửi email cho quản lí nhà hàng
            $this->sendMailAdmin($emailAdmin,$data,$dataSend);
        }
        if($run){
                return (object) array('status' => 200, 'description' => 'Thành công');
        }else{
                return (object) array('status' => 203, 'description' => 'Không thành công,thử lại');
        }
		
    }
	public function sendMailAdmin($emailAdmin,$data,$data_add){
            $config = array(
                                            'protocol' => 'smtp',
                                            'smtp_host' => $this->_smtp_host,
                                            'smtp_user' => $this->_smtp_user,
                                            'smtp_pass' => $this->_smtp_pass,
                                            'mailtype' => 'html'
                );
            $this->load->library('email',$config);
//		foreach ( $emailAdmin AS $el=>$le ){
//			$date_booking = explode('|',$data['time_booking']);
//			$date_book = $date_booking[0].' - Ngày : '.$date_booking[1];
//		
//				$body  = "<img src='http://125.212.192.114/ggift/data/images/other/mail-header-gg.jpg' style='width: 825px;'/><br/><br/><strong> Chào ";
//			$body .= $le->fullname ? $le->fullname : 'Bạn';
//			$body .= "!</strong> <br /><br /> Có 1 khách hàng vừa đăng kí đặt bàn tại nhà hàng của bạn !<br /><b>Thông tin đặt bàn:</b><br/>
//			Họ tên : ".$data['name']."<br/>
//			Số điện thoại : ".$data['phone']."<br/>
//			Địa chỉ email :  ".$data['email']."<br/>
//			Thời gian đặt bàn : ".$date_book."<br/>
//			Số người : ".$data['peoples']."<br/>
//			Nhà hàng : ".$data_add->name_res."<br/>
//			Địa chỉ : ".$data_add->res_add."<br/>
//			<br/><br/><img src='http://125.212.192.114/ggift/data/images/other/mail-footer-gg.jpg' style='width: 825px;'/>";
//				
//				$this->email->from($this->_smtp_user, 'G-People');
//				$this->email->to((string)$le->email);
//                if($el == 0){
//                    $this->email->cc('callcenter@blueriver.vn,mkt.parttime@ggg.com.vn');
//                }
//				$this->email->subject('Thông tin đặt bàn tại '.$data_add->name_res);
//				$this->email->message($body);    
//				
//				if($this->email->send()){
//				    $this->email->clear(TRUE);
//				}
//		}
            $date_booking = explode('|',$data['time_booking']);
            $date_book = $date_booking[0].' - Ngày : '.$date_booking[1];
            $body  = "<img src='http://125.212.192.114/ggift/data/images/other/mail-header-gg.jpg' style='width: 825px;'/><br/><br/><strong> Chào ";
            $body .= $dataSend->fullname;
            $body .= "!</strong> <br /><br /> Có 1 khách hàng vừa đăng kí đặt bàn tại nhà hàng của bạn !<br /><b>Thông tin đặt bàn:</b><br/>
            Họ tên : ".$data['name']."<br/>
            Số điện thoại : ".$data['phone']."<br/>
            Địa chỉ email :  ".$data['email']."<br/>
            Thời gian đặt bàn : ".$date_book."<br/>
            Số người : ".$data['peoples']."<br/>
            Nhà hàng : ".$data_add->name."<br/>
            Địa chỉ : ".$data_add->address."<br/><br/><br/><img src='http://125.212.192.114/ggift/data/images/other/mail-footer-gg.jpg' style='width: 825px;'/>
            ";

            $this->email->from($this->_smtp_user, 'G-People');
            $this->email->to($emailAdmin);
            $this->email->subject('Thông tin đặt bàn tại '.$data_add->name);
            $this->email->message($body);    

            if($this->email->send()){
                $this->email->clear(TRUE);
            }
	}
	
	public function sendMailMember($emailMember,$data,$data_add){
           $config = array(
						'protocol' => 'smtp',
						'smtp_host' => $this->_smtp_host,
						'smtp_user' => $this->_smtp_user,
						'smtp_pass' => $this->_smtp_pass,
						'mailtype' => 'html'
                    );
        $this->load->library('email',$config);
			$date_booking = explode('|',$data['time_booking']);
			$date_book = $date_booking[0].' - Ngày : '.$date_booking[1];
			$body = "<img src='http://125.212.192.114/ggift/data/images/other/mail-header-gg.jpg' style='width: 825px;'/><br/><br/>Chúc mừng Quý khách đã đăng ký đặt bàn thành công tại <b>".$data_add->name_res."</b>! Nhà hàng sẽ liên hệ với Quý khách qua điện thoại trong vòng 24h để xác nhận thông tin. <br /><br />Để không bỏ lỡ bất kỳ ưu đãi hấp dẫn từ hệ thống nhà hàng của Golden Gate Restaurant Group, Quý khách có thể thực hiện theo một trong những cách sau đây: <br /><br />- <a target='_blank' href='https://www.facebook.com/GoldenGateRestaurantGroup'>Like fanpage Golden Gate Restaurant Group</a> để cập nhật ưu đãi hàng ngày <br />- <a target='_blank' href='http://ggg.com.vn/promotions/data/dang-ky-nhan-thong-tin/'>Đăng ký</a> để nhận thông tin ưu đãi qua Email và SMS Để góp ý cho hệ thống của chúng tôi, vui lòng gửi ý kiến tới địa chỉ email <b>hn.support@ggg.com.vn</b>.<br /><br /> Golden Gate Restaurant Group mong luôn nhận được sự ủng hộ của Quý khách!<br/><br/><img src='http://125.212.192.114/ggift/data/images/other/mail-footer-gg.jpg' style='width: 825px;'/>";

			$this->email->from($this->_smtp_user, 'G-People');
				$this->email->to((string)$emailMember);    
				$this->email->subject('Thông tin đặt bàn tại '.$data_add->name_res);
				$this->email->message($body);    
				if($this->email->send()){
				    $this->email->clear(TRUE);
				}
	}
	
	public function getEmailAdmin(){   // [{email: "dungdcth@gmail.com",fullname: "mod"},{email: "bocdau@gmail.com",fullname: "Nguyễn Văn Nhất"}];
		return $this->db->query('SELECT u.email as email, u.fullname FROM user as u JOIN permission as p ON u.id = p.id_user WHERE p.id_module = 16 ')->result_object();
	}
	public function getAddressName($address_id){ //{name_res: "Nhà hàng bia hải xồm",res_add: "335 Phố Huê, Hai Bà Tưng"}
		return $this->db->query('SELECT r.name as name_res, ra.address as res_add FROM restaurant as r JOIN restaurant_address as ra ON r.id = ra.restaurant_id WHERE ra.id = '.$address_id)->row_object();
	}
	
    
    public function loginUser()
    {
        
    }
    
    
    public function registerUser($username)
    {
        $pass = $this->generateCode(6);
        $pass_encode = md5(md5($username).md5($pass));
        $qr = $this->db->query('SELECT * FROM user WHERE username = "'.strtolower($username).'"');
        $check = $qr->num_rows();
        
        if($check == 0)
        {
            $data = array(
                'username'  => $username,
                'password'  => $pass_encode
            );  
            $this->db->insert('user', $data);
	        $ID = $this->db->insert_id();
            $this->sendOTP($username, $pass);
            
            $_data = $this->db->query('SELECT * FROM user WHERE id = '.$ID)->row_object();
            $_data->password = null;
            return (object)array('status' => 200, 'content' => $_data);
        }else{
            $data = array(
                'password'  => $pass_encode
            );  
            $this->db->update('user', $data, "username = '".strtolower($username)."'");
            $this->sendOTP($username, $pass);
            $_data = $this->db->query('SELECT * FROM user WHERE username = "'.strtolower($username).'"')->row_object();
            $_data->password = null;
            return (object)array('status' => 200, 'content' => $_data);
        }   
    }
    
    public function getDataUser($id)
    {
        return $this->db->query('SELECT * FROM user WHERE id = '.$id)->row_object();
    }
    
    public function infoUser($id)
    {
        return $this->db->query('SELECT * FROM user WHERE id = '.$id)->row_object();
    }
    
    
    private function exNumberPhone($num)
    {
        return '84'.substr($num, 1);
    }
    
    private function sendOTP($dest, $otp, $types = 0)
    {
        if($types == 1)
        {
            $body = "VTV New Password:\n Mat khau moi cua ban la: ".$otp;
        }else{
            $body = "VTV OTP Code:\n Ma xac thuc cua ban la: ".$otp;
        }
        $NumberPhone = $this->exNumberPhone($dest);
    	$moid = '0';
    	$moseq = '0';
    	$src = '8069';
    	$cmdcode = '';
    	$msgtype = 'Text';
    	$msgtitle = '';
    	$mttotalseg = '1';
    	$mtseqref = '1';
    	$procresult ='1';
	$cpid = '10424';
    	$username = '3';
    	$password = 'e#@$';
    	$WSDL = "http://agent.gapit.com.vn/AgentWS_SureM/SMSAgentWS.asmx?wsdl";
    	$client = new SoapClient($WSDL);
    	$mtseq = date('YmdHis').rand(0,999);
    
    	$data = array(
    		'mtseq'         =>    $mtseq,
    		'moid'          =>    $moid,
    		'moseq'         =>    $moseq,
    		'src'           =>    $src,
    		'dest'          =>    $NumberPhone,
    		'cmdcode'       =>    $cmdcode,
    		'msgbody'       =>    $body,
    		'msgtype'       =>    $msgtype,
    		'msgtitle'      =>    $msgtitle,
    		'mttotalseg'    =>    $mttotalseg,
    		'mtseqref'      =>    $mtseqref,
    		'cpid'          =>    $cpid,
    		'reqtime'       =>    date("d/m/Y h:i:s A"),
    		'serviceid'     =>    'Service01',
    		'procresult'    =>    $procresult,        
    		'username'      =>    $username,
    		'password'      =>    $password
    	);
    
    	$status = $client->SendMT($data);         
    }
    
    
    public function changePassDB()
    {
        $uname = $this->getParamString('username');
        $upassold = $this->getParamString('passwordold');
        $upassnew = $this->getParamString('passwordnew');
        $passwordcfr = $this->getParamString('passwordcfr');

        $pass_encode = md5(md5($uname).md5($upassold));
        
        $sql = $this->db->query("SELECT * FROM user WHERE username = '".strtolower($uname)."' AND password = '".$pass_encode."' ");
        if($sql->num_rows() > 0)
        {
            if($upassnew != $passwordcfr)
            {
                return 201;
            }
    
            $pass_en_code = md5(md5($uname).md5($upassnew));
            $data = array(
                'password'  => $pass_en_code
            );  
            $this->db->update('user', $data, "username = '".strtolower($uname)."'");
            return 200;
        }else{
            return 404;
        }

    }
    
    
    public function forGotDB()
    {
        $pass = $this->generateCode(6);
        $uname = $this->getParamString('username');
        $pass_encode = md5(md5($uname).md5($pass));
        
        $qr = $this->db->query('SELECT * FROM user WHERE username = "'.strtolower($uname).'"');
        $check = $qr->num_rows();
        
        if($check > 0)
        {
            $data = array(
                'password'  => $pass_encode
            );  
            $this->db->update('user', $data, "username = '".strtolower($uname)."'");
            $this->sendOTP($uname, $pass, 1);
            return 200;
        }else{
            return 404;
        }
    }
    
    
    public function followDB()
    {
        $id_user = $this->getParamInt('user_id');
        $id_tvshow = $this->getParamInt('id_tvshow');
        $sql = $this->db->query('SELECT id FROM follow_tvshow WHERE user_id = '.$id_user.' AND tvshow_id = '.$id_tvshow);
        
        $check = $sql->num_rows();
        if($check > 0)
        {
            $id = $sql->row_object()->id;
            $this->db->delete('follow_tvshow', "id = ".$id);
            return (object)array('status' => 201, 'Hủy thành công');
        }else{
            $this->db->insert('follow_tvshow', array('user_id' => $id_user, 'tvshow_id' => $id_tvshow, 'created' => time()));
            return (object)array('status' => 200, 'Thêm thành công');
        }
        return (object)array('status' => 202, 'Lỗi khác');
    }
    
	
    public function getIncentiveLabel($limit,$stt,$label){
        $data =  $this->db->query("SELECT ir.id,ir.title,ir.title_ascii,ir.image,ir.summary,ir.content,ir.type,ir.province_id,ir.created,ir.slide_image AS post_image FROM incentive_restaurant AS ir LEFT JOIN incentive_restaurant_key AS irk ON irk.id_incentive = ir.id LEFT JOIN restaurant AS r ON r.id = irk.id_restaurant WHERE irk.id_restaurant = $label OR ir.type_sl = 0 AND ir.active = 1 ORDER BY created DESC LIMIT $stt,$limit ")->result_object();
        return $data;
    }
    
    public function getRatingLabel($label)
    {
        if(!in_array($label, array(null, ''))){
            $data_review = $this->db->query('SELECT rr.star AS star FROM restaurant AS r INNER JOIN restaurant_review AS rr ON rr.restaurant_id = r.id WHERE rr.improved = 1 AND r.id = '.$label)->result_object();
            $sum = 0; $dem = 0;
			foreach ( $data_review AS $al=>$la ){
				if ( !in_array($la->star,array('',null,0)) ){
					$sum += (int)$la->star;
					$dem++;
				}
			}
            return (object)array('rate' => number_format(($sum/$dem),'2', ',', '.'), 'review_count' => $dem);
        }else{
            $data = $this->db->query("SELECT id,name FROM restaurant")->result_object();
            foreach($data AS $key=>$val)
            {
                $data_review = $this->db->query('SELECT rr.star AS star FROM restaurant AS r INNER JOIN restaurant_review AS rr ON rr.restaurant_id = r.id WHERE rr.improved = 1 AND r.id = '.$val->id)->result_object();
                $sum = 0; $dem = 0;
    			foreach ( $data_review AS $al=>$la ){
    				if ( !in_array($la->star,array('',null,0)) ){
    					$sum += (int)$la->star;
    					$dem++;
    				}
    			}
                $rate = number_format(($sum/$dem),'2', ',', '.');
                $data[$key]->rate = $rate;
                $data[$key]->review_count = $dem;
            }
            return $data;
               
        }
    }
	
    public function countDownApp($device_name,$os_name){
            if( in_array($device_name,array('',null)) || in_array($os_name,array('',null)) ){
                    return array('data' => '201', 'content' => 'Không thể thêm thiết bị mới');
            }else{
                    $data = array(
                            'device_name' => $device_name,
                            'os_name' => $os_name,
                            'created' => date('Y-m-d')
                    );
            $this->db->insert('log_downapp', $data);
                    return array('data' => '200', 'content' => 'Thêm thiết bị thành công');
            }
    }
        
    public function getIncentiveResDb($page,$limit,$zone,$id_res)
    {
        If($page< 1 || in_array( $limit,array('',null,'0'))|| in_array( $zone,array('',null,'0')) || in_array( $id_res,array('',null,'0')))
        {
             return (object) array('status' => 201, 'description' => 'Tham số không đúng'); 
        }
        $stt=$limit*($page-1);
        $sql_limit=" LIMIT $stt,$limit ";
        $query=" SELECT ir.id,ir.title,ir.image,ir.slide_image ,ir.summary,ir.content"
            . " FROM incentive_restaurant as ir,incentive_zone_key as izk ,incentive_restaurant_key as irk "
            . "WHERE ir.id=izk.id_incentive AND ir.id=irk.id_incentive AND izk.id_zone = '$zone' AND irk.id_restaurant = '$id_res' AND ir.active = 1 ORDER by ir.id DESC";
        $incent=$this->db->query($query)->result_array();
        if(count($incent)==0)return (object) array('status' => 202, 'description' => 'Không tìm thấy ưu đãi'); 
        $data['list_incentive']=$incent;
        $data['total']=count($incent);
//        if($data['total'] == 0){
//            return (object) array('status' => 201,'description' => 'Không tìm thấy ưu đãi');
//        }
        return (object) array('status' => 200, 'description' => 'Tìm thấy ưu đãi','data'=>$data);  
    }
    
    private function sendMailUser($user_id, $code_coupon, $id_ecoupon_user)
    {
	$db = $this->db->query('SELECT username,fullname FROM member WHERE id = '.$user_id.' LIMIT 1')->row();
        $datacp = $this->db->query('SELECT e.title,e.note_email,e.subject_email FROM ecoupon AS e LEFT JOIN ecoupon_user AS eu ON e.id = eu.coupon_id WHERE eu.id = '.$id_ecoupon_user.' LIMIT 1')->row(); 
        $config = array(
						'protocol' => 'smtp',
						'smtp_host' => $this->_smtp_host,
						'smtp_user' => $this->_smtp_user,
						'smtp_pass' => $this->_smtp_pass,
						'mailtype' => 'html'
                    );
        $this->load->library('email',$config);
        $body    = "<img src='http://125.212.192.114/ggift/data/images/other/mail-header-gg.jpg' style='width: 825px;'/><br/><br/>Chúc mừng bạn đã đăng ký nhận ".$datacp->title." thành công! <br />Mã E-coupon của bạn là: <b>".$code_coupon."</b><br /><br />".html_entity_decode(stripslashes($datacp->note_email), ENT_QUOTES, "UTF-8")."<br/><br/><img src='http://125.212.192.114/ggift/data/images/other/mail-footer-gg.jpg' style='width: 825px;'/>"; 
        $this->email->from($this->_smtp_user, 'G-People');
        $this->email->to($db->username);    
        $this->email->subject($datacp->subject_email);
        $this->email->message($body);    
        if($this->email->send()){
        }
    }
}
